const formatTime = (date) => {
  const year = date.getFullYear();
  const month = date.getMonth() + 1;
  const day = date.getDate();
  const hour = date.getHours();
  const minute = date.getMinutes();
  const second = date.getSeconds();

  return `${[year, month, day].map(formatNumber).join("/")} ${[
    hour,
    minute,
    second,
  ]
    .map(formatNumber)
    .join(":")}`;
};

const formatNumber = (n) => {
  n = n.toString();
  return n[1] ? n : `0${n}`;
};

/**
 * 上传歌曲播放记录到服务器
 * @param {Object} song - 歌曲信息对象
 * @param {number} song.id - 歌曲ID
 * @param {string} song.name - 歌曲名称
 * @param {Array} song.artists - 歌手信息数组，包含id和name
 * @param {number} song.dt - 歌曲时长（毫秒）
 * @returns {Promise} - 返回Promise对象
 */
const uploadPlayRecord = (song) => {
  return new Promise((resolve, reject) => {
    // 获取登录凭证和设备信息
    const token = wx.getStorageSync("access_token");
    const userInfo = wx.getStorageSync("userInfo") || {};
    // 实时获取最新的设备信息，而不是使用缓存
    const deviceInfo = wx.getStorageSync("deviceInfo") || {};
    
    console.log("上传播放记录使用的设备信息:", deviceInfo);

    if (!song || !song.id) {
      reject(new Error("缺少歌曲信息"));
      return;
    }

    // 构建请求数据
    const data = {
      device_id: deviceInfo.deviceId || "",
      user_id: userInfo.userId || 0,
      timestamp: Math.floor(Date.now()), // Unix时间戳（秒）
      song_name: song.name || "",
      id: song.id,
      artists: song.artists || [],
      dt: song.dt || 0,
    };

    // 发送请求
    wx.request({
      url: "https://smartsound.top/api/v2/data",
      method: "POST",
      header: {
        "Content-Type": "application/json",
      },
      data: data,
      success: (res) => {
        console.log("播放记录上传成功:", res.data);
        resolve(res.data);
      },
      fail: (err) => {
        console.error("播放记录上传失败:", err);
        reject(err);
      },
    });
  });
};

module.exports = {
  formatTime,
  uploadPlayRecord,
};
